文本搜索函数和操作符
最近更新时间: 2024-10-17 17:10:00
文本搜索操作符
操作符 | 返回类型 | 描述 |
---|---|---|
@@ | bool | tsvector 是否匹配 tsquery |
@@@ | bool | 同 @@ |
|| | tsvector | 连接 tsvector |
&& | tsquery | 将 tsvector 用 AND 连接起来 |
|| | tsquery | 将 tsquery 用 OR 连接起来 |
!! | tsquery | 对一个 tsquery 取反 |
<-> | tsquery | tsquery 后面跟着 tsquery |
@> | bool | tsquery 包含另一个 tsquery |
<@ | bool | tsquery 是否被包含 |
示例:
postgres=# SELECT to_tsvector('fat cats ate rats') @@ to_tsquery('cat & rat');
?column?
----------
f
(1 row)
postgres=# SELECT 'a:1 b:2'::tsvector || 'c:1 d:2 b:3'::tsvector;
?column?
---------------------------
'a':1 'b':2,5 'c':3 'd':4
(1 row)
postgres=# SELECT 'fat | rat'::tsquery && 'cat'::tsquery;
?column?
---------------------------
( 'fat' | 'rat' ) & 'cat'
(1 row)
postgres=# SELECT !! 'cat'::tsquery;
?column?
----------
!'cat'
(1 row)
postgres=# SELECT to_tsquery('fat') <-> to_tsquery('rat');
?column?
-----------------
'fat' <-> 'rat'
(1 row)
postgres=# SELECT 'cat'::tsquery @> 'cat & rat'::tsquery;
?column?
----------
f
(1 row)
文本搜索函数
函数 | 返回类型 | 描述 |
---|---|---|
array_to_tsvector(text[]) | tsvector | 把词位数组转换成 tsvector |
get_current_ts_config() | regconfig | 获得默认文本搜索配置 |
length(tsvector) | integer | tsvector 中的词位数 |
numnode(tsquery) | integer | tsquery 中词位外加操作符的数目 |
querytree(query tsquery) | text | 获得一个 tsquery 的可索引部分 |
setweight(tsvector, "char") | tsvector | 为 tsvector 的每一个元素分配权重 |
to_tsquery([ config regconfig , ] query text) | tsvector | 规范化词并转换成 tsquery |
to_tsvector([ config regconfig, ] document text) | tsvector | 缩减文档文本成 tsvector |
ts_delete(vector tsvector, lexeme text) | tsvector | 从 vector 中移除给定的 lexeme |
ts_filter(vector tsvector, weights "char"[]) | tsvector | 从 vector 中只选择带有给定权重的元素 |
ts_rewrite(query tsquery, targettsquery, substitute tsquery) | tsquery | 在查询内用 substitute 替换 target |
ts_rewrite(query tsquery, selecttext) | tsquery | 使用来自一个 SELECT 的目标和替换者进行替换 |
tsvector_to_array(tsvector) | text[] | 把 tsvector 转换为词位数组 |
示例:
postgres=# SELECT array_to_tsvector('{fat,cat,rat}'::text[]);
array_to_tsvector
-------------------
'cat' 'fat' 'rat'
(1 row)
postgres=# SELECT get_current_ts_config();
get_current_ts_config
-----------------------
simple
(1 row)
postgres=# SELECT length('fat:2,4 cat:3 rat:5A'::tsvector);
length
--------
3
(1 row)
postgres=# SELECT querytree('foo & ! bar'::tsquery);
querytree
-----------
'foo'
(1 row)
postgres=# SELECT to_tsquery('english', 'The & Fat & Rats');
to_tsquery
---------------
'fat' & 'rat'
(1 row)
postgres=# SELECT ts_delete('fat:2,4 cat:3 rat:5A'::tsvector, 'fat');
ts_delete
------------------
'cat':3 'rat':5A
(1 row)
postgres=# SELECT tsvector_to_array('fat:2,4 cat:3 rat:5A'::tsvector);
tsvector_to_array
-------------------
{cat,fat,rat}
(1 row)